<?php

namespace App\Models;

use App\Jobs\ModelsAddQueue;
use Illuminate\Database\Eloquent\Model;

class ModelBase extends Model
{
    use SplitTableTrait;

    /**
     * 指定是否模型应该被戳记时间。
     * @var bool
     */
    public $timestamps = false;

    /**
     * 设置当前模型使用的数据库连接名。
     *
     * @var string
     */
    protected $connection = 'mysql';

    /**
     * 原始表名
     * @var string
     */
    protected $originTable = '';

    /**
     * 分表后缀
     *
     * @var string
     */
    public $suffix = '';

    /**
     * 分表方式 Ym,oW,w
     *
     * @var string
     */
    public $splitType = '';

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);

        // 初始化分表处理
        $this->initSplitTable();
    }

    /**
     * 通过队列来存储日志，此接口只能用于新加数据，更新数据不能采用此接口
     * @return boolean
     */
    public function saveJob()
    {
        //如果是本地。直接保存，不走队列
        if (config('app.env') == 'local') {
            $this->save();
            return false;
        }

        // 将模型字段内容转为数组
        $values = $this->toArray();
        $class  = static::class;
        ModelsAddQueue::dispatch($class, $values)->onQueue('default');
    }
}
